package vista;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

import modelo.CuentaCorrienteDTO;
import modelo.MovimientosDTO;
import controlador.Banco;

public class ventanaBuscarCC extends JFrame {

	private static final long serialVersionUID = 1L;
	private Banco banco;
	private JScrollPane barra;
	private JTable tabla;
	private JPanel panel;
    private JLabel lblNombre;
    private JTextField txtNombre;
    private JLabel lblApellido;
    private JTextField txtApellido;
    private JLabel lblDNI;
    private JTextField txtDNI;
    private JLabel lblDomicilio;
    private JTextField txtDomicilio;
    private JLabel lblFechaNac;
    private JTextField txtFechaNac;
    private JLabel lblDescubierto;
	private JTextField txtDescubierto;
	private JLabel lblSaldo;
	private JTextField txtSaldo;
	private JLabel lblNroCuenta;
	private JTextField txtNroCuenta;
    private JButton btnAceptar;
    private JButton btnBuscar;

    
    public ventanaBuscarCC(Banco banco) {
    	super();
    	this.banco=banco;
    	cargarVentana();
    	establecerAcciones();
	}

	private void establecerAcciones() {
		
		btnAceptar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent evt){
				setVisible(false);
			}
		});
		btnBuscar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent evt){
				CuentaCorrienteDTO ccDTO=(CuentaCorrienteDTO) banco.buscarCuenta(Integer.parseInt(txtDNI.getText())).crearCuentaDTO();
				if(ccDTO!=null){
					txtNombre.setText(ccDTO.getCliente().getNombre());
					txtApellido.setText(ccDTO.getCliente().getApellido());
					txtDNI.setText(String.valueOf(ccDTO.getCliente().getDni()));
					txtFechaNac.setText(ccDTO.getCliente().getFechaNacimiento());
					txtDomicilio.setText(ccDTO.getCliente().getDomicilio());
					txtDescubierto.setText(String.valueOf(ccDTO.getDescubierto()));
					txtSaldo.setText(String.valueOf(ccDTO.getSaldo()));
					txtNroCuenta.setText(String.valueOf(ccDTO.getNumeroCuenta()));
					this.cargarDatos(ccDTO.getMovimientosDTO());
				}
			}
			private void cargarDatos(Vector<MovimientosDTO> iDTO) {
				DefaultTableModel modeloVista = (DefaultTableModel) tabla.getModel();
				for (int i = 0; i < iDTO.size(); i++) {
					
					modeloVista.addRow(new Object[] {
								iDTO.elementAt(i).getFecha(),
						    iDTO.elementAt(i).getDescripcion(),
						    String.valueOf(iDTO.elementAt(i).getMonto())
							 });
				}
				
			}
		});
		
	}

	private void cargarVentana() {
		 setSize(700, 550);
         setVisible(true);
         panel = new JPanel();
         panel.setBounds(getBounds());
         panel.setLayout(null);
         lblNombre = new JLabel("Nombre");
         lblNombre.setBounds(20, 60, 80, 25);
         panel.add(lblNombre);
         txtNombre = new JTextField();
         txtNombre.setBounds(100, 60, 290, 25);
         panel.add(txtNombre);
         lblApellido = new JLabel("Apellido");
         lblApellido.setBounds(20, 90, 80, 25);
         panel.add(lblApellido);
         txtApellido = new JTextField();
         txtApellido.setBounds(100, 90, 290, 25);
         panel.add(txtApellido);
         lblDNI = new JLabel("DNI");
         lblDNI.setBounds(20, 120, 80, 25);
         panel.add(lblDNI);
         txtDNI = new JTextField();
         txtDNI.setBounds(100, 120, 290, 25);
         panel.add(txtDNI);
         lblFechaNac = new JLabel("Fecha Nac");
         lblFechaNac.setBounds(20, 150, 80, 25);
         panel.add(lblFechaNac);
         txtFechaNac = new JTextField();
         txtFechaNac.setBounds(100, 150, 290, 25);
         panel.add(txtFechaNac);
         lblDomicilio = new JLabel("Domicilio");
         lblDomicilio.setBounds(20, 180, 80, 25);
         panel.add(lblDomicilio);
         txtDomicilio = new JTextField();
         txtDomicilio.setBounds(100, 180, 290, 25);
         panel.add(txtDomicilio);
         lblDescubierto=new JLabel("Descubierto");
         lblDescubierto.setBounds(20, 210, 80, 25);
     	 panel.add(lblDescubierto);
     	 txtDescubierto=new JTextField();
     	 txtDescubierto.setBounds(100, 210, 290, 25);
    	 panel.add(txtDescubierto);
    	 lblSaldo=new JLabel("Saldo");
         lblSaldo.setBounds(20, 240, 80, 25);
     	 panel.add(lblSaldo);
     	 txtSaldo=new JTextField();
     	 txtSaldo.setBounds(100, 240, 290, 25);
    	 panel.add(txtSaldo);
    	 lblNroCuenta=new JLabel("Nro Cuenta");
         lblNroCuenta.setBounds(20, 30, 80, 25);
     	 panel.add(lblNroCuenta);
     	 txtNroCuenta=new JTextField();
     	 txtNroCuenta.setBounds(100, 30, 290, 25);
    	 panel.add(txtNroCuenta);
    	 
 		
		btnAceptar = new JButton("Aceptar");
        btnAceptar.setBounds(150, 450, 90, 25);
        panel.add(btnAceptar);
        btnBuscar = new JButton("Buscar");
        btnBuscar.setBounds(400, 120, 90, 25);
        panel.add(btnBuscar);
        panel.setBounds(getBounds());
       

    	tabla=new JTable((new DefaultTableModel(new Object[] {
 				"Fecha", "Descripcion","Monto"}, 0)));
    	tabla.setEnabled(false);
    	tabla.setBounds(20, 270, 390, 100);
 		tabla.getColumnModel().getColumn(0).setPreferredWidth(100);
 		DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
 		rightRenderer.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);
 		DefaultTableCellRenderer leftRenderer = new DefaultTableCellRenderer();
 		leftRenderer.setHorizontalAlignment(DefaultTableCellRenderer.LEFT);
 		tabla.getColumnModel().getColumn(1).setCellRenderer(leftRenderer);
 		tabla.getColumnModel().getColumn(1).setPreferredWidth(230);
 		tabla.getColumnModel().getColumn(2).setCellRenderer(leftRenderer);
 		tabla.getColumnModel().getColumn(2).setPreferredWidth(50);
 	
 		barra = new JScrollPane(tabla);
		barra.setBounds(tabla.getBounds());
        panel.add(barra);
        
        
        this.add(panel);
		
	}

	
}
